home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / pkgutil.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  3KB  |  78 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''Utilities to support packages.'''
  5. import os
  6. import sys
  7.  
  8. def extend_path(path, name):
  9.     """Extend a package's path.
  10.  
  11.     Intended use is to place the following code in a package's __init__.py:
  12.  
  13.         from pkgutil import extend_path
  14.         __path__ = extend_path(__path__, __name__)
  15.  
  16.     This will add to the package's __path__ all subdirectories of
  17.     directories on sys.path named after the package.  This is useful
  18.     if one wants to distribute different parts of a single logical
  19.     package as multiple directories.
  20.  
  21.     It also looks for *.pkg files beginning where * matches the name
  22.     argument.  This feature is similar to *.pth files (see site.py),
  23.     except that it doesn't special-case lines starting with 'import'.
  24.     A *.pkg file is trusted at face value: apart from checking for
  25.     duplicates, all entries found in a *.pkg file are added to the
  26.     path, regardless of whether they are exist the filesystem.  (This
  27.     is a feature.)
  28.  
  29.     If the input path is not a list (as is the case for frozen
  30.     packages) it is returned unchanged.  The input path is not
  31.     modified; an extended copy is returned.  Items are only appended
  32.     to the copy at the end.
  33.  
  34.     It is assumed that sys.path is a sequence.  Items of sys.path that
  35.     are not (unicode or 8-bit) strings referring to existing
  36.     directories are ignored.  Unicode items of sys.path that cause
  37.     errors when used as filenames may cause this function to raise an
  38.     exception (in line with os.path.isdir() behavior).
  39.     """
  40.     if not isinstance(path, list):
  41.         return path
  42.     
  43.     pname = os.path.join(*name.split('.'))
  44.     sname = os.extsep.join(name.split('.'))
  45.     sname_pkg = sname + os.extsep + 'pkg'
  46.     init_py = '__init__' + os.extsep + 'py'
  47.     path = path[:]
  48.     for dir in sys.path:
  49.         if not isinstance(dir, basestring) or not os.path.isdir(dir):
  50.             continue
  51.         
  52.         subdir = os.path.join(dir, pname)
  53.         initfile = os.path.join(subdir, init_py)
  54.         if subdir not in path and os.path.isfile(initfile):
  55.             path.append(subdir)
  56.         
  57.         pkgfile = os.path.join(dir, sname_pkg)
  58.         if os.path.isfile(pkgfile):
  59.             
  60.             try:
  61.                 f = open(pkgfile)
  62.             except IOError:
  63.                 msg = None
  64.                 sys.stderr.write("Can't open %s: %s\n" % (pkgfile, msg))
  65.  
  66.             for line in f:
  67.                 line = line.rstrip('\n')
  68.                 if not line or line.startswith('#'):
  69.                     continue
  70.                 
  71.                 path.append(line)
  72.             
  73.             f.close()
  74.             continue
  75.     
  76.     return path
  77.  
  78.